#ifndef MYLISTWIDGETITEM_H
#define MYLISTWIDGETITEM_H

#include <QWidget>
#include <QPainter>
#include <QResizeEvent>
#include <QPainterPath>
#include <QFontMetrics> // 用于计算给定字体的字符和字符串的大小
#include "publicstruct.h"



namespace Ui {
class MyListWidgetItem;
}

class MyListWidgetItem : public QWidget
{
    Q_OBJECT

public:
    explicit MyListWidgetItem(const QString& content,int flag,QPixmap head,int type,QWidget *parent = nullptr);
    ~MyListWidgetItem();


protected:
    void paintEvent(QPaintEvent *event)override;
    void resizeEvent(QResizeEvent* event)override;
    bool eventFilter(QObject *object, QEvent *event)override;
signals:
    // 当文本需要多行显示时,发送信号改变QListWidgetItem的高度
    void sig_rectChange(QSize size,int index);
private:
    Ui::MyListWidgetItem *ui;

    int curr_Width;             // 当前窗口的宽度
    int curr_height;            // 当前窗口的高度

    QRect Rect_Lefthead;        // 左侧头像矩形
    QRect Rect_Righthead;       // 右侧头像矩形
    QRect Rect_LeftBubble;      // 左侧气泡矩形
    QRect Rect_RightBubble;     // 右侧气泡矩形

    int msg_type;               // 消息类型
    int m_flag;                 // 用户与好友的标识
    QString m_data;             // 消息内容
    QPixmap head_pixmap;        // 头像
    QPixmap m_joy;              // 表情图片
    QPixmap m_file;             // 文件图片
    QString m_fname;            // 当消息类型为文件，记录文件名
    QString m_fsize;            // 当消息类型为文件，记录文件大小
    QString fileID;             // 当消息类型为文件，记录文件ID

public:
    int seq = 0;                // 记录item在ListWidgetItem中的位置
};

#endif // MYLISTWIDGETITEM_H
